package JavaSE.d5;

import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.FileVisitor;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.BasicFileAttributes;

/*
要求：传入字符串路径参数，如果此路径表示的是文件，则返回文件的大小；如果此路径表示的是目录，则要求返回目录中所有的文件的大小之和。
 */
public class Test23 {
    static  long size=0;
    public static void main(String[] args) throws IOException {
        Path p= Path.of("C:\\Users\\a\\Desktop\\新项目\\创想软件/contest");
        p=p.resolve(p);
        if(Files.isDirectory(p)){//如果是目录
            Files.walkFileTree(p, new FileVisitor<Path>() {
                @Override
                public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {

                    return FileVisitResult.CONTINUE;
                }

                @Override
                public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                    System.out.println("访问到文件"+file);
                    size += Files.size(file);
                    return FileVisitResult.CONTINUE;
                }

                @Override
                public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
                    System.out.println("访问失败");
                    return FileVisitResult.CONTINUE;
                }

                @Override
                public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
                    return FileVisitResult.CONTINUE;
                }
            });
        }else {
            size=Files.size(p);
        }


        System.out.println("该目录下文件总共大小"+size);
    }
}
